#include <iostream>
using std::cout;
using std::endl;

void print(int x){
    cout << "print:" << x << endl;
}

void display(int x){
    cout << "display:" << x << endl;
}

void show(){
    cout << "show" << endl;
}

typedef int INT;
typedef void (*Function)(int);

void test0(){
    //定义函数指针时要确定其指向的函数的
    //返回类型、参数信息
    //省略形式
    void (*p1)(int) = print;
    p1(3);
    p1 = display;
    p1(5);

    //完整形式
    void (*p2)(int) = &print;
    (*p2)(8);
    p2 = &display;
    (*p2)(10);

    //可以认为p1、p2是同一种类型的变量
    //void (*)(int)
    //只能理解为逻辑类型，在代码中不能直接写这种类型名称
    /* p2 = &show; */
    Function p3;
    p3 = print;
    p3(2);
    p3 = display;
    p3(4);

    /* Function * p; */
    /* Function arr[3] = {p1,p2,p3}; */
}

int main(void){
    test0();
    return 0;
}
